from collections import defaultdict
from typing import List


class Solution:
    """
    方法：使用哈希表将字母异位词分组
    通过将每个字符串排序后作为哈希表的键，将具有相同字母组成的字符串分组在一起

    Args:
        strs: List[str] - 输入的字符串列表

    Returns:
        List[List[str]] - 分组后的字母异位词列表，每个子列表包含一组字母异位词

    Time: O(n * klogk) - 其中n是字符串数量，k是字符串最大长度，需要对每个字符串进行排序
    Space: O(n * k) - 需要存储所有字符串及其排序后的结果
    """
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        d = defaultdict(list)
        for s in strs:
            sorted_s = ''.join(sorted(s))
            d[sorted_s].append(s)
        return list(d.values())